Computer and communications systems, including mobile platforms, are being offered with increasing numbers of processors (e.g., Central Processing Units or CPUs) and increasing numbers of processor cores (e.g., hardware cores) integrated on those CPUs. This is generally done to provide greater computing power through increased parallelism. Each hardware core may also include multiple hardware threads (also referred to as logical cores or hyperthreading) to further increase the number of parallel operations. Unfortunately, software applications are often not designed to take advantage of this parallelism and, in fact, may actually suffer in performance as hardware is upgraded to offer more parallel processing capability. This can be caused, for example, by relatively inefficient synchronization between the various components of the software (e.g., processes and/or software threads) that are partitioned out for parallel execution. It may also be caused by the need to share limited resources among those components. These difficulties may thus limit the scalability of software applications to handle increasing workloads or throughput based only on increased computational power.
Although the following Detailed Description will proceed with reference being made to illustrative embodiments, many alternatives, modifications, and variations thereof will be apparent to those skilled in the art.